/*global Qiniu */
/*global plupload */
/*global FileProgress */
/*global hljs */
$(function() {
  //先从服务器请求token
  var token = "";
  $.ajax({
      url:ROOTBASE+"/upload/token",
      async: false,
      type : 'GET',
      success : function(data, status, xhr) {
        // alert(data.uptoken);
        token = data.uptoken;
      }
    });
    //初始呼上传组件
    var uploader = Qiniu.uploader({
        runtimes: 'html5,flash,html4', // 上传模式,依次退化
        browse_button: 'pickfiles', // 上传选择的点选按钮，**必需**
        container: 'container',
        drop_element: 'container',
        max_file_size: '1000mb',
        flash_swf_url: 'bower_components/plupload/js/Moxie.swf',
        dragdrop: true,
        chunk_size: '4mb',
        multi_selection: !(mOxie.Env.OS.toLowerCase()==="ios"),
        //在初始化时，uptoken, uptoken_url, uptoken_func 三个参数中必须有一个被设置
        //切如果提供了多个，其优先级为 uptoken > uptoken_url > uptoken_func
        uptoken:token,
        // uptoken_url: '/upload/token',//可以直接请求拿token的接口(暂时有问题,拿不到)
        domain: $('#domain').val(),//上传的url
        get_new_uptoken: false,// 设置上传文件的时候是否每次都重新获取新的 uptoken
        // downtoken_url: '/downtoken',
        unique_names: true,//唯一文件名称
        auto_start: true, // 选择文件后自动上传，若关闭需要自己绑定事件触发上传,
        log_level: 5,
        init: {
            'FilesAdded': function(up, files) {
              // 文件添加进队列后,处理相关的事情
                // $('table').show();
                // $('#success').hide();
                // plupload.each(files, function(file) {
                //     var progress = new FileProgress(file, 'fsUploadProgress');
                //     progress.setStatus("等待...");
                //     progress.bindUploadCancel(up);
                // });
            },
            'BeforeUpload': function(up, file) {
                // 每个文件上传前,处理相关的事情
                // var progress = new FileProgress(file, 'fsUploadProgress');
                // var chunk_size = plupload.parseSize(this.getOption('chunk_size'));
                // if (up.runtime === 'html5' && chunk_size) {
                //     progress.setChunkProgess(chunk_size);
                // }
            },
            'UploadProgress': function(up, file) {
              // 每个文件上传时,处理相关的事情
                // var progress = new FileProgress(file, 'fsUploadProgress');
                // var chunk_size = plupload.parseSize(this.getOption('chunk_size'));
                // progress.setProgress(file.percent + "%", file.speed, chunk_size);
            },
            'UploadComplete': function() {
               //队列文件处理完毕后,处理相关的事情
                // $('#success').show();
            },
            'FileUploaded': function(up, file, info) {
              // 每个文件上传成功后,处理相关的事情
               // 其中 info 是文件上传成功后，服务端返回的json，形式如
               // {
               //    "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
               //    "key": "gogopher.jpg"
               //  }
               // 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
               var domain = up.getOption('domain');
               var res = $.parseJSON(info);
               var sourceLink = domain + encodeURI(res.key);//获取上传成功后的文件的Url
               $("#upload_img").attr("src",sourceLink);
               $("#size100img").attr("src",sourceLink);
               $("#size50img").attr("src",sourceLink);
               $("#upload_img_url").val(sourceLink);
               //css("background","url("+sourceLink+")");
               //  $("#uploadimg").attr("src",sourceLink);
               // var progress = new FileProgress(file, 'fsUploadProgress');
               // progress.setComplete(up, info);
            },
            'Error': function(up, err, errTip) {
                //上传出错时,处理相关的事情
                // $('table').show();
                // var progress = new FileProgress(err.file, 'fsUploadProgress');
                // progress.setError();
                // progress.setStatus(errTip);
            }
                // ,
                // 'Key': function(up, file) {
                //     var key = "";
                //     // do something with key
                //     return key
                // }
        }
    });

    uploader.bind('FileUploaded', function() {
        console.log('hello man,a file is uploaded');
    });
});
